package com.lovo.javafxComponent;

import java.util.Collection;
import java.util.List;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;

/**
 * 下拉框组件
 * @author lenovo
 *
 */
public class LovoComboBox<T> extends ComboBox{
	/**
	 * 标题下拉框
	 * @param title
	 * @param items
	 * @param x
	 * @param y
	 * @param container
	 */
	public LovoComboBox(String title,String[] items,int x,int y,Pane container){
		Label label = new Label(title);
		label.setLayoutX(x);
		label.setLayoutY(y);
		label.setPrefWidth(100);
		label.setPrefHeight(20);
		label.setFont(new Font(16));
		
		
		this.setLayoutX(x + 100);
		this.setLayoutY(y);
		this.setPrefWidth(150);
		this.setPrefHeight(20);
		this.getItems().addAll(items);
		if(items != null && items.length !=0) {
			this.getSelectionModel().select(0);
		}
		container.getChildren().add(label);
		container.getChildren().add(this);
		
		addEvent();
	}
	
	/**
	 * 添加事件
	 */
	private void addEvent() {
		this.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
			 
            @Override
            public void changed(ObservableValue observable, Object oldValue, Object newValue) {
            	changeEvent(newValue);
            }
        });
	}

	/**
	 * 
	 * @param title
	 * @param items
	 * @param x
	 * @param y
	 * @param container
	 */
	public LovoComboBox(String title,Collection<T> items,int x,int y,Pane container){
		Label label = new Label(title);
		label.setLayoutX(x);
		label.setLayoutY(y);
		label.setPrefWidth(100);
		label.setPrefHeight(20);
		label.setFont(new Font(16));
		
		
		this.setLayoutX(x + 100);
		this.setLayoutY(y);
		this.setPrefWidth(150);
		this.setPrefHeight(20);
		this.getItems().addAll(items);
		if(items != null && items.size() !=0) {
			this.getSelectionModel().select(0);
		}
		container.getChildren().add(label);
		container.getChildren().add(this);
		
		addEvent();
	}
	
	/**
	 * 设置集合下拉框
	 * @param list 对象集合
	 */
	public void setList(List<T> list) {
		if(list != null && list.size() !=0) {
			this.getItems().clear();
			this.getItems().addAll(list);
			this.getSelectionModel().select(0);
		}
	}
	
	/**
	 * 选项变化事件业务方法
	 * @param currentItem 当前选项
	 */
	public void changeEvent(Object currentItem) {
		
	}
}
